//package com.houmeiyuan.huiguniang.service;
//
//import com.houmeiyuan.huiguniang.common.HttpConfig;
//import com.houmeiyuan.huiguniang.common.OrderInfoUtils;
//import com.houmeiyuan.huiguniang.common.WXPayUtil;
//import com.houmeiyuan.huiguniang.modles.dao.OrderFormDao;
//import com.houmeiyuan.huiguniang.modles.dao.OrderItemDao;
//import com.houmeiyuan.huiguniang.modles.domain.*;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Service;
//
//import java.util.*;
//
///**
// * @author zsscmd@126.com
// * @date 2019/6/5
// */
//
//@Service
//public class PayService {
//    //微信下单接口
//    private String createOrderUrl = "https://api.mch.weixin.qq.com/pay/unifiedorder";
//    private String queryOrderUrl = "https://api.mch.weixin.qq.com/pay/orderquery";
//    //微信商户号
//    @Value("${wechat.shopKey}")
//    private String mchId;
//    //微信分配的小程序ID
//    @Value("${wechat.appId}")
//    private String appId ;
//    @Value("${wechat.domain}")
//    private String domain;
//    //微信商户秘钥
//    @Value("${wechat.shopSecret}")
//    private String shopKey;
//    @Value("${wechat.ip}")
//    private String ip;
//
//    @Autowired
//    private OrderFormDao orderDao;
//    @Autowired
//    private OrderItemDao orderItemDao;
//    @Autowired
//    private ShopCarService productShopCarService ;
//
//
//    /**
//     * 预支付交易会话标志prepay_id,二维码链接code_url
//     *
//     * @return
//     */
//    public Map<String, String> createOrder(OrderForPay orderForPay) {
//            Map<String, String> params = new HashMap<>();
//            params.put("appid", appId);
//            params.put("mch_id",mchId);
//            //生成随机字符
//            String nonceStr = WXPayUtil.generateNonceStr();
//            params.put("nonce_str",nonceStr);
//
//            params.put("body", "灰姑娘-商品信息");
//            params.put("openid",orderForPay.getOpenId());
//            //支付账单号
//            String tradeNumber = OrderInfoUtils.getTradeNumber();
//            params.put("out_trade_no", tradeNumber);
//            //计算订单结算
//            params.put("total_fee",String.valueOf(orderForPay.getMoney()));
//            params.put("trade_type", "JSAPI");
//            params.put("spbill_create_ip", ip);
//            params.put("notify_url",domain+"/notify/notice");
//
//            try {
//                String signXml = WXPayUtil.generateSignedXml(params, shopKey);
//               // System.out.println(signXml);
//                String resultXml = null;
//                Map<String, String> result = new HashMap<>();
//                if (signXml != null) {
//                    resultXml = HttpConfig.doPostXml(createOrderUrl, signXml);
//                    //System.out.println(resultXml);
//                    result = WXPayUtil.xmlToMap(resultXml);
//                    if(result.get("return_code").equals("SUCCESS") && result.get("result_code").equals("SUCCESS")){
//                        result.put("nonce_str",nonceStr);
//                        result.put("sign",WXPayUtil.generateSignature(params,shopKey));
//                        //openId
//                        String openId = orderForPay.getOpenId();
//                        Integer addressId = orderForPay.getAddressId();
//                        Date createTime = new Date();
//                        Map<String, Object> param = new HashMap<>();
//                        param.put("openId",openId);
//
//                        //String orderNumber  = OrderInfoUtils.getOrderNumber();
//                        //订单设置
//                        OrderForm order = new OrderForm();
//                        //order.setOrderNumber(orderNumber);
//                        //order.setTradeNumber(tradeNumber);
//                        order.setCreateTime(createTime);
//                        order.setOpenId(openId);
//                        order.setAddressId(addressId);
//
//                        //商品列表初始化
//                        List<OrderItem> orderItemList = new ArrayList<>();
//
//                            int sum = 0;
//
//                            for (ShopCar shopCar :orderForPay.getList()
//                                    ) {
//                                OrderItem orderItem = new OrderItem();
//                                orderItem.setGoodsId(shopCar.getProductId());
//                                /*
//                               提交订单清空对应购物车产品
//                                 */
//                                param.put("productId",shopCar.getProductId());
//                                productShopCarService.deleteProduct(param);
//                                param.remove("productId");
//                                /*
//                                计算每个商品的金额
//                                 */
//                                orderItem.setGoodsNumber(shopCar.getProductNumber());
//                                orderItem.setEachPrice(Integer.parseInt(shopCar.getProductPrice()));
//                                sum += shopCar.getProductNumber() * Integer.parseInt(shopCar.getProductPrice());
//
//                                orderItemList.add(orderItem);
//                                orderItemDao.addProducts(orderItemList);
//                                orderItemList.clear();
//                            }
//                            order.setOrderTotal(sum);
//                            orderDao.addOrderForm(order);
//                }
//
//            } else {
//                System.out.println("签名生成失败！");
//                return null;
//            }
//            return result;
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    public Map<String, String> queryOrder(String mchId, String tradeNo) {
//        Map<String, String> params = new HashMap<>();
//        params.put("appid", appId);
//        params.put("out_trade_no", tradeNo);
//        params.put("mch_id", mchId);
//        String nonceStr = WXPayUtil.generateNonceStr();
//        params.put("nonce_str", nonceStr);
//        String signXml = null;
//        try {
//            signXml = WXPayUtil.generateSignature(params, shopKey);
//            String resultXml = null;
//            Map<String, String> result = new HashMap<>();
//            if (signXml != null) {
//                resultXml = HttpConfig.doPostXml(queryOrderUrl, signXml);
//                result = WXPayUtil.xmlToMap(resultXml);
//            } else {
//                System.out.println("签名生成失败！");
//                return null;
//            }
//            return result;
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//
//}
